GitHub Organizationから特定の3rd-Party Appへのアクセス許可を一括または個別に無効化(Revoke)または再付与(Re-Grant)する
こんにちは、CX事業本部の若槻です。
GitHubをCI/CDツールなどの3rd-Party Appと連携させる場合は、GitHubから対象のAppへアクセス許可を付与する必要があります。
今回は、GitHub Organizationから特定の3rd-Party Appへのアクセス許可を一括または個別に無効化(Revoke)または再付与(Re-Grant)する方法を確認してみました。
やってみた
ここでは特定の3rd-Party Appの例としてCircleCIを使用して確認していきます。
アクセス許可を一括で無効化(Revoke)する
複数のGitHub Organizationから特定の3rd-Party Appへのアクセス許可を一括でRevokeしてみます。
注意点として、本方法の場合はOrganizationだけでなく操作を行ったGitHubユーザーアカウントの3rd-Party Appへのアクセス許可もRevokeされます。ユーザーのRevokeをしたくない場合は後述の「アクセス許可を個別に無効化(Revoke)する」方法を全てのOrganizationに対して行ってください。
アクセス許可をRevokeしたいGitHub OrganizationのOwner権限を持つGitHubユーザーアカウントで、[Personal settings] - [Applications] - [Authorized OAuth Apps]を開き(ここからも直接開けます)、アクセス許可をRevokeしたい3rd-Party Appを選択します。
[Organization access]を見ると現在CircleCIへアクセス許可が付与されているGitHub Organization(ユーザーが参加済み)の一覧が確認できます。✓
であれば許可済み、☓
であればRevoke済みとなります。現在はすべてのOrganizationが付与済みとなっています。これらのOrganizationへのアクセス許可を一括でRevokeする場合は[Revoke access]をクリックします。
確認ダイアログで[I understand, revoke access]をクリックします。
Authorized OAuth Appsの一覧からCircleCIが削除されました。
これで複数のGitHub Organizationから特定の3rd-Party Appへ付与したアクセス許可を一括でRevokeできました。
Revokeしたアクセス許可を一括で再付与(Re-Grant)する
先ほど一括でRevokeした複数のGitHub Organizationから特定の3rd-Party Appへのアクセス許可を、一括でRe-Grantすることもできます。
そのためにはCircleCIに再度GitHubユーザーアカウントでサインアップします。
CircleCIのログインページを開き、[Log in with GitHub]をクリックします。
アクセス許可をRe-GrantしたいGitHub OrganizationのOwner権限を持つGitHubユーザーアカウントでサインインしたら、次のような画面が表示されます。[Organization access]を見るとCircleCIへアクセス許可がRe-Grant可能なGitHub Organization(ユーザーが参加済み)の一覧が確認できます。過去にアクセス許可がRevokeされたOrganizationであれば既定で✓
が付いてRe-Grantされるようになります。[Authorize circleci]をクリックします。
GitHubのどのユーザーまたはOrganizationアカウントをCircleCIで開くか聞かれるので選択します。
CircleCIにサインアップできました。アクセス許可をRe-GrantしたOrganizationのPipeline一覧を見ると、Revoke前に実施されたCIの履歴もちゃんと残っています。
これで先ほど一括でRevokeした複数のGitHub Organizationから特定の3rd-Party Appへのアクセス許可を、一括でRe-Grantできました。
アクセス許可を個別に無効化(Revoke)する
次に、特定の一つのGitHub Organizationから特定の3rd-Party Appへのアクセス許可を個別にRevokeしてみます。
アクセス許可を個別にRevokeしたいOrganizationのアカウントページを開き、[Settings] - [Third-party access]より過去にアクセス許可をGrantしたことのある3rd-Party App一覧が確認できます。Approved
となっていれば現在Grant済みです。今回はCircleCIへのアクセス許可をRevokeしてみます。鉛筆マークをクリックします。
[Access]の[Deny Access]をクリックします。
CircleCIへのアクセス許可がRevokeされ、現在のアクセス許可がNo private access
となりました。
確認のため、GitHubユーザーアカウントで[Personal settings] - [Applications] - [Authorized OAuth Apps] - [CircleCI]を開くと、個別にRevoke操作をしたOrganizationのアクセス許可のみ☓
となりRevokeされています。
個別にRevoke操作をしたOrganizationのCircleCIのPipeline一覧をURL(https://app.circleci.com/pipelines/github/<Organization Account>
)から開いてみると、No Pipelines here
となりアクセスできなくなっています。
これで特定の一つのGitHub Organizationから特定の3rd-Party Appへのアクセス許可を個別にRevokeできました。
Revokeしたアクセス許可を個別に再付与(Re-Grant)する
最後に、先ほど個別にRevokeした特定の一つのGitHub Organizationから特定の3rd-Party Appへのアクセス許可を個別にRe-Grantしてみます。
アクセス許可を個別にRe-GrantしたいOrganizationのアカウントページを開き、[Settings] - [Third-party access]よりRe-Grantしたい3rd-Party Appの鉛筆マークをクリックします。今回はCircleCIへのアクセス許可をRe-Grantしてみます。[Access]で現在のアクセス許可がNo private access
となっているのを確認し、[Grant Access]をクリックします。
CircleCIへのアクセス許可がRe-Grantされ、現在のアクセス許可がApproved
となりました。
確認のため、GitHubユーザーアカウントで[Personal settings] - [Applications] - [Authorized OAuth Apps] - [CircleCI]を開くと、個別にRe-Grant操作をしたOrganizationのアクセス許可が✓
となりRe-Grantされています。
個別にRevoke操作をしたOrganizationのCircleCIのPipeline一覧をURL(https://app.circleci.com/pipelines/github/<Organization Account>
)から開いてみると、Revoke前に実施されたCIの履歴もちゃんと残っています。
これで個別にRevokeした特定の一つのGitHub Organizationから特定の3rd-Party Appへのアクセス許可を個別にRe-Grantできました。
おわりに
GitHub Organizationから特定の3rd-Party Appへのアクセス許可を一括または個別に無効化(Revoke)または再付与(Re-Grant)してみました。
過去に次のような記事も投稿していましたが、今回その完全版のような記事を書くことができました。
以上